package com.tianqu.tms.www.transfer.action;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.tianqu.tms.core.base.TmsAction;
import com.tianqu.tms.core.base.UserContext;
import com.tianqu.tms.core.exception.TmsDaoException;
import com.tianqu.tms.core.util.TmsConstants;
import com.tianqu.tms.entity.TransferAcceptedInfo;
import com.tianqu.tms.www.transfer.actionform.CarOwnerAuditActionForm;
import com.tianqu.tms.www.transfer.controller.CarOwnerAuditInputController;
import com.tianqu.tms.www.transfer.viewhelper.CarOwnerAuditInputViewHelper;

public class CarOwnerAuditInputAction extends TmsAction {

	@Override
	protected ActionForward doAction(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response,
			UserContext uc) throws Exception {

		CarOwnerAuditActionForm inputForm = (CarOwnerAuditActionForm)uc.getInputForm();
		String serial = inputForm.getSerial();
		
		CarOwnerAuditInputController controller = new CarOwnerAuditInputController();
		controller.execute(uc);

		CarOwnerAuditInputViewHelper view = (CarOwnerAuditInputViewHelper) uc.getAttribute(TmsConstants.VIEWHELP);
		if (view == null) {
			view = new CarOwnerAuditInputViewHelper();
		}
		request.setAttribute(VIEWHELP, view);	

		if (null != uc.getAttribute("auditErr") && !"".equals(uc.getAttribute("auditErr"))) {
			String auditErr = (String)uc.getAttribute("auditErr");
			uc.removeAttribute("auditErr");
			
			view = (CarOwnerAuditInputViewHelper) uc.getAttribute(TmsConstants.VIEWHELP);
			if (view == null) {
				view = new CarOwnerAuditInputViewHelper();
			}
			
			// 【U0039】查询的结果不存在。
			if ("U0039".equals(auditErr)) {
				setErrorsToRequest(request, TmsConstants.U0039 ,null);
				return mapping.getInputForward();
			}
			
			// 【U1405】出现重复流水号业务，请联系系统管理员。
			if ("U1405".equals(auditErr)) {
				setErrorsToRequest(request, TmsConstants.U1405 ,null);
				return mapping.getInputForward();
			}
			
			// 如果有符合条件数据 并且 公安审核（transferRegister）为“2：公安未审核”，那么页面提示“【U1064】该业务未通过公安审核，不能进行车主审核。”
			if ("U1064".equals(auditErr)) {
				setErrorsToRequest(request, TmsConstants.U1064 ,null);
				return mapping.getInputForward();
			}
			
			//  # 如果有符合条件数据 并且 公安审核（transferRegister）为“3：公安审核未通过”，那么页面提示“该业务公安审核未通过，原因：{原因}”
			if ("U1064A".equals(auditErr)) {
				String[] param = {getTransferAcceptedInfo(serial)};
				setErrorsToRequest(request, TmsConstants.U1064A ,param);
				return mapping.getInputForward();
			}
			
			// 当该业务的公安审核（transferRegister）为“4：公安审核中”时，页面提示“【U1065】该业务在公安审核中，仅可以保存，不可以通过。”，同时，页面按钮显示，“上一步”、“保存”，隐藏“审核完成”。
			if ("U1072".equals(auditErr)) {
				setErrorsToRequest(request, TmsConstants.U1072 ,null);
				return mapping.findForward(TmsConstants.SUCCESS);
			}
			
			// 当该业务的公安审核（transferRegister）为“1：公安审核通过”时，页面提示“【U1066】该业务在公安审核已通过。”，同时，页面按钮显示，“上一步”、“审核完成”，隐藏“保存”。
			if ("U1071".equals(auditErr)) {
				setErrorsToRequest(request, TmsConstants.U1071 ,null);
				return mapping.findForward(TmsConstants.SUCCESS);
			}
		}

		return mapping.findForward(TmsConstants.SUCCESS);
	}
	
	private String getTransferAcceptedInfo(String serial) throws TmsDaoException {
		Map<String, Integer> map = TransferAcceptedInfo.getInstance().getTransferAcceptedInfo(serial);
		StringBuffer info = new StringBuffer();
		if(map.containsKey("epStandard") && map.get("epStandard") == 2) info.append(" 环保达标:未达标 ");
		if(map.containsKey("carReplaceType") &&map.get("carReplaceType") == 2) info.append(" 客车换型:换 ");
		if(map.containsKey("carPeccancy") &&map.get("carPeccancy") == 2) info.append(" 车辆违章:违章 ");
		if(map.containsKey("overdue") &&map.get("overdue") == 2) info.append(" 超检审核:车辆检验逾期 ");
		if(map.containsKey("mortgage") &&map.get("mortgage") == 2) info.append(" 抵押审核:已抵押 ");
		if(map.containsKey("sealup") &&map.get("sealup") == 2) info.append(" 查封审核:查封 ");
		if(map.containsKey("registration") &&map.get("registration") == 2) info.append(" 登记证书:无 ");
		if(map.containsKey("drivingLicense") &&map.get("drivingLicense") == 2) info.append(" 行驶证:不符 ");
		if(map.containsKey("scrapOverdue") &&map.get("scrapOverdue") == 2) info.append(" 报废超期:超期 ");
		if(map.containsKey("robbery") &&map.get("robbery") == 2) info.append(" 盗抢审核:盗抢 ");
		if(map.containsKey("ownerEscaping") &&map.get("ownerEscaping") == 2) info.append(" 原车主在逃:在逃 ");
		if(map.containsKey("ownerScrap") &&map.get("ownerScrap") == 2) info.append(" 原车主报废车:强制报废 ");
		if(map.containsKey("ownerLive") &&map.get("ownerLive") == 2) info.append(" 原车主居住证:无居住证明 ");
		if(map.containsKey("newEscaping") &&map.get("newEscaping") == 2) info.append(" 新车主在逃:在逃 ");
		if(map.containsKey("newScrap") &&map.get("newScrap") == 2) info.append(" 新车主报废车:强制报废 ");
		if(map.containsKey("newLive") &&map.get("newLive") == 2) info.append(" 新车主居住证:无居住证明 ");
		return info.toString();
	}

}
